GtkAccessiblePlatformChange change)
{
GtkATContext *context = gtk_accessible_get_at_context (self);
+
+ /* propagate changes up from ignored widgets */
+ if (gtk_accessible_get_accessible_role (self) == GTK_ACCESSIBLE_ROLE_NONE)
+ {
+ if (gtk_widget_get_parent (GTK_WIDGET (self)) == NULL)
+ return;
+
+ context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (gtk_widget_get_parent (GTK_WIDGET (self))));
+ }
+
if (context == NULL)
return;
gtk_at_context_update (context);
}
+gboolean
+gtk_accessible_get_platform_state (GtkAccessible *self,
+ GtkAccessiblePlatformState state)
+{
+ return GTK_ACCESSIBLE_GET_IFACE (self)->get_platform_state (self, state);
+}
+
gboolean
gtk_accessible_should_present (GtkAccessible *self)
{
GTypeInterface g_iface;
GtkATContext * (* get_at_context) (GtkAccessible *self);
+
+ gboolean (* get_platform_state) (GtkAccessible *self,
+ GtkAccessiblePlatformState state);
};
GtkATContext * gtk_accessible_get_at_context (GtkAccessible *self);
const char * gtk_accessible_role_to_name (GtkAccessibleRole role,
const char *domain);
-void gtk_accessible_platform_changed (GtkAccessible *self,
- GtkAccessiblePlatformChange change);
+void gtk_accessible_platform_changed (GtkAccessible *self,
+ GtkAccessiblePlatformChange change);
+gboolean gtk_accessible_get_platform_state (GtkAccessible *self,
+ GtkAccessiblePlatformState state);
gboolean gtk_accessible_should_present (GtkAccessible *self);
} GtkAccessibleStateChange;
typedef enum {
- GTK_ACCESSIBLE_PLATFORM_CHANGE_FOCUSABLE = 1 << 0,
- GTK_ACCESSIBLE_PLATFORM_CHANGE_FOCUSED = 1 << 1,
+ GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE,
+ GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED,
+} GtkAccessiblePlatformState;
+
+typedef enum {
+ GTK_ACCESSIBLE_PLATFORM_CHANGE_FOCUSABLE = 1 << GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE,
+ GTK_ACCESSIBLE_PLATFORM_CHANGE_FOCUSED = 1 << GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED,
} GtkAccessiblePlatformChange;
struct _GtkATContext
return priv->at_context;
}
+static gboolean
+gtk_widget_accessible_get_platform_state (GtkAccessible *self,
+ GtkAccessiblePlatformState state)
+{
+ switch (state)
+ {
+ case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
+ return gtk_widget_get_focusable (GTK_WIDGET (self));
+ case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
+ return gtk_widget_has_focus (GTK_WIDGET (self));
+ default:
+ g_assert_not_reached ();
+ }
+}
+
static void
gtk_widget_accessible_interface_init (GtkAccessibleInterface *iface)
{
iface->get_at_context = gtk_widget_accessible_get_at_context;
+ iface->get_platform_state = gtk_widget_accessible_get_platform_state;
}
/*